#ifndef _HCN_INVOKE_INTERFACE_H_
#define _HCN_INVOKE_INTERFACE_H_
#include <windows.h>
#include "RadioDef.h"
#include "ProtocalDef.h"
class CHCNInvokeInterface
{
public:
	CHCNInvokeInterface();
	~CHCNInvokeInterface();
public:
	HMODULE m_hTBInvoke;	
public:
	
//Radio Area	
//	typedef long (*PFN_REGISTERRADIODATACALLBACK)(TB_RadioData_CbkFunc RadioData_CbkFunc);
	typedef void (*PFN_RAIDOBANDCHANGECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOTUNERUPCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOTUNERDOWNCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSEEKUPCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSEEKDOWNCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOLOCCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOEQCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOPRESETCHANGECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSAVEPRESETCHANGECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOASCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOPSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSTEREOCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOTUNERENTERCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOFADBALANCECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOMUTECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIODDBCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_RADIOSCANCMD)(WPARAM wParam, LPARAM lParam);
//Common System Area
//FadBalance
//	typedef long (*PFN_REGISTERCOMBALANCECALLBACK)(TB_ComBalance_CbkFunc ComBalance_CbkFunc);
//	typedef long (*PFN_REGISTERCOMSYSTEMCALLBACK)(TB_ComSystem_CbkFunc ComSystem_CbkFunc);
	typedef void (*PFN_COMMONSYSTEMVOLUMECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONLOWPITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONHIGHPITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONBALENCEFRONTCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONBALENCELEFTCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONFREQRESPONSECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONEQCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONLIGHTNESSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONCONTRASTNESSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONVIDEOSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONDAYSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONMUTESWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONTFTSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONBREAKALARMSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONAUTOREVERSECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONREARMIRRORSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_COMMONFRONTMIRRORSWITCHCMD)(WPARAM wParam, LPARAM lParam);

//General Setup
//	typedef long (*PFN_REGISTERSETUPCALLBACK)(TB_Setup_CbkFunc Setup_CbkFunc);
	typedef void (*PFN_SETUPTIMEMODESWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPBEEPSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPLANGUAGESWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPAUTOLOGOSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPVOLUMELIMITSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPCLOCKSHOWSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPGPSLISTEMSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPHANDBREAKSWITCHCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SETUPREARMIRRORSWITCHCMD)(WPARAM wParam, LPARAM lParam);
//20121031 add
//	typedef void (*PFN_UPDATEPROTOCALINFO)(PROTOCAL_INFO &ProtocalInfo);
//SWC
//	typedef long (*PFN_REGISTERSWCCALLBACK)(TB_SWC_CbkFunc SWC_CbkFunc);
	typedef void (*PFN_SWCENTERSWCCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SWCESCAPESWCCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SWCRESETCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SWCSTEERKEYCMD)(WPARAM wParam, LPARAM lParam);

//Source
//	typedef long (*PFN_REGISTERSOURCECALLBACK)(TB_SOURCE_CbkFunc Source_CbkFunc);
	typedef void (*PFN_SOURCECHANGEMODECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_SOURCEINVOTEMENUSOURCE)();

//MPEG
//	typedef void (*PFN_REGISTERMPEGCALLBACK)(TB_MPEG_CbkFunc Mpeg_CbkFunc);
	typedef void (*PFN_MPEGTOUCHPOSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MPEGTOUCHRELEASECMD)(WPARAM wParam, LPARAM lParam);

//Empty Wnd
//	typedef void (*PFN_REGISTEREMPTYWNDCALLBACK)(TB_EmptyWnd_CbkFunc EmptyWnd_CbkFunc);

//Startup Wnd
//	typedef void (*PFN_REGISTERSTARTUPWNDCALLBACK)(TB_StartupWnd_CbkFunc StartupWnd_CbkFunc);
/*******************HCN Protocal******************************/
	typedef void (*PFN_INITIALDEVICECOMM)();
	typedef void (*PFN_DEINITDEVICE)();
	typedef void (*PFN_MCUINITCMD)();
	typedef void (*PFN_MCUDEVICESTATUSCMD)();
	typedef void (*PFN_ARMREPORTSTATUSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_ARMREPORTSOURCESTARTCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUCHANGESOURCECMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUSETAUDIOCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUSETEQCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUAUDIOCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUVERSIONCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUSETTINGSCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUCANCMD)(WPARAM wParam, LPARAM lParam);

	typedef void (*PFN_MCURADIOINFOCMD)(WPARAM wParam, LPARAM lParam);
//SWC
	typedef void (*PFN_MCUSWCCMD)(WPARAM wParam, LPARAM lParam);
	typedef void (*PFN_MCUSWCSIMPLECMD)(WPARAM wParam, LPARAM lParam);

/*******************HCN Protocal******************************/
public:
	PFN_INITIALDEVICECOMM			m_iInitialDeviceComm;
//20121031 add
//	PFN_UPDATEPROTOCALINFO			m_iUpdateProtocalInfo;

//Radio Area
//	PFN_REGISTERRADIODATACALLBACK	m_iRegisterRadioDataCallback;
	PFN_RAIDOBANDCHANGECMD			m_iRadioBandChangeCmd;
	PFN_RADIOTUNERUPCMD				m_iRadioTunerUpCmd;
	PFN_RADIOTUNERDOWNCMD			m_iRadioTunerDownCmd;
	PFN_RADIOSEEKUPCMD				m_iRadioSeekUpCmd;
	PFN_RADIOSEEKDOWNCMD			m_iRadioSeekDownCmd;
	PFN_RADIOLOCCMD					m_iRadioLocCmd;
	PFN_RADIOEQCMD					m_iRadioEQCmd;
	PFN_RADIOPRESETCHANGECMD		m_iRadioPresetChangeCmd;
	PFN_RADIOSAVEPRESETCHANGECMD	m_iRadioSavePresetChangeCmd;
	PFN_RADIOASCMD					m_iRadioASCmd;
	PFN_RADIOPSCMD					m_iRadioPSCmd;
	PFN_RADIOSTEREOCMD				m_iRadioStereoCmd;
	PFN_RADIOTUNERENTERCMD			m_iRadioTunerEnterCmd;
	PFN_RADIOFADBALANCECMD			m_iRadioFadBalanceCmd;
	PFN_RADIOMUTECMD				m_iRadioMuteCmd;
	PFN_RADIODDBCMD					m_iRadioDDBCmd;
	PFN_RADIOSCANCMD				m_iRadioScanCmd;	
//Common System Area
//FadBalance
//	PFN_REGISTERCOMBALANCECALLBACK	m_iRegisterComBalanceCallback;
//	PFN_REGISTERCOMSYSTEMCALLBACK	m_iRegisterComSystemCallback;
	PFN_COMMONSYSTEMVOLUMECMD		m_iCommonSystemVolumeCmd;
	PFN_COMMONLOWPITCHCMD			m_iCommonLowPitchCmd;
	PFN_COMMONHIGHPITCHCMD			m_iCommonHighPitchCmd;
	PFN_COMMONBALENCEFRONTCMD		m_iCommonBalenceFrontCmd;
	PFN_COMMONBALENCELEFTCMD		m_iCommonBalenceLeftCmd;
	PFN_COMMONFREQRESPONSECMD		m_iCommonFreqResponseCmd;
	PFN_COMMONEQCMD					m_iCommonEQCmd;
	PFN_COMMONLIGHTNESSCMD			m_iCommonLightnessCmd;
	PFN_COMMONCONTRASTNESSCMD		m_iCommonContrastnessCmd;
	PFN_COMMONVIDEOSWITCHCMD		m_iCommonVideoSwitchCmd;
	PFN_COMMONDAYSWITCHCMD			m_iCommonDaySwitchCmd;
	PFN_COMMONMUTESWITCHCMD			m_iCommonMuteSwitchCmd;
	PFN_COMMONTFTSWITCHCMD			m_CommonTFTSwitchCmd;
	PFN_COMMONBREAKALARMSWITCHCMD	m_iCommonBreadAlarmSwitchCmd;
	PFN_COMMONAUTOREVERSECMD		m_iCommonAutoReverseCmd;
	PFN_COMMONREARMIRRORSWITCHCMD	m_iCommonRearMirrorSwitchCmd;
	PFN_COMMONFRONTMIRRORSWITCHCMD	m_iCommonFrontMirrorSwitchCmd;

//General Setup
//	PFN_REGISTERSETUPCALLBACK		m_iRegisterSetupCallback;
	PFN_SETUPTIMEMODESWITCHCMD		m_iSetupTimeModeSwitchCmd;
	PFN_SETUPBEEPSWITCHCMD			m_iSetupBeepSwitchCmd;
	PFN_SETUPLANGUAGESWITCHCMD		m_iSetupLanguageSwitchCmd;
	PFN_SETUPAUTOLOGOSWITCHCMD		m_iSetupAutoLogoSwitchCmd;
	PFN_SETUPVOLUMELIMITSWITCHCMD	m_iSetupVolumeLimitSwitchCmd;
	PFN_SETUPCLOCKSHOWSWITCHCMD		m_iSetupClockShowSwitchCmd;
	PFN_SETUPGPSLISTEMSWITCHCMD		m_iSetupGpsListemSwitchCmd;
	PFN_SETUPHANDBREAKSWITCHCMD		m_iSetupHandBreakSwitchCmd;
	PFN_SETUPREARMIRRORSWITCHCMD	m_iSetupRearMirrorSwitchCmd;
//SWC
//	PFN_REGISTERSWCCALLBACK			m_iRegisterSWCCallback;
	PFN_SWCENTERSWCCMD				m_iSWCEnterSWCCmd;
	PFN_SWCESCAPESWCCMD				m_iSWCEscapeSWCCmd;
	PFN_SWCRESETCMD					m_iSWCResetCmd;
	PFN_SWCSTEERKEYCMD				m_iSWCSteerKeyCmd;	

//Source
//	PFN_REGISTERSOURCECALLBACK		m_iRegisterSourceCallback;
	PFN_SOURCECHANGEMODECMD			m_iSourceChangeModeCmd;
	PFN_SOURCEINVOTEMENUSOURCE		m_iSourceInvoteMenuSource;

//MPEG
//	PFN_REGISTERMPEGCALLBACK		m_iRegisterMpegCallback;
	PFN_MPEGTOUCHPOSCMD				m_iMpegTouchPosCmd;
	PFN_MPEGTOUCHRELEASECMD			m_iMpegTouchReleaseCmd;

//Empty Wnd
//	PFN_REGISTEREMPTYWNDCALLBACK	m_iRegisterEmptyWndCallback;

//Startup Wnd
//	PFN_REGISTERSTARTUPWNDCALLBACK	m_iRegisterStartupWndCallback;

/*******************HCN Protocal******************************/
	PFN_MCUINITCMD					m_iMcuInitCmd;
	PFN_DEINITDEVICE				m_iDeInitDevice;
	PFN_MCUDEVICESTATUSCMD			m_iMcuDeviceStatusCmd;
	PFN_ARMREPORTSTATUSCMD			m_iArmReportStatusCmd;
	PFN_ARMREPORTSOURCESTARTCMD		m_iArmReportSourceStartCmd;
	PFN_MCUCHANGESOURCECMD			m_iMcuChangeSourceCmd;
	PFN_MCUSETAUDIOCMD				m_iMcuSetAudioCmd;
	PFN_MCUSETEQCMD					m_iMcuSetEQCmd;
	PFN_MCUVERSIONCMD				m_iMcuVersionCmd;
	PFN_MCUSETTINGSCMD				m_iMcuSettingsCmd;
	PFN_MCUCANCMD					m_iMcuCanCmd;
	PFN_MCURADIOINFOCMD				m_iMcuRadioInfoCmd;

//swc
	PFN_MCUSWCCMD					m_iMcuSWCCmd;
	PFN_MCUSWCSIMPLECMD				m_iMcuSwcSimpleCmd;
};	

extern CHCNInvokeInterface g_HCNInvokeInterface;

#endif